// 应用程序入口
//express_demo.js 文件
const express = require('express');

const bodyParser = require('body-parser');

const fs = require("fs");

// 通过expres()函数，创建app对象
const app = express();

// 添加json解析，处理客户端传来的HTTP正文中的json数据
app.use(bodyParser.json({limit: '1mb'}));

// 解析身体中 queryString参数 name=XXX&age=XXX（可选）
app.use(bodyParser.urlencoded())


// 处理静态资源：访问static地址，被映射到了硬盘上的一个路径（可选）
app.use('/static', express.static('D:\\nginx-1.19.6\\root\\static'));

// 解决跨域 记得npm i cors --save（可选，如果没有配置正式发布需要在nginx上配置反向代理）
const cors = require('cors');
app.use(cors());

// 使用listen监听8888端口，第二个参数是回调函数，表示网站成功创建后锁执行的代码
server = app.listen(8888, function () {
    console.log("8888启动完毕……");
})

// 总的路由拦截：所有的请求，都进入到express来处理
app.use('/', (req, res, next) => {
    console.log(req.url);
    next();
})

// 项目按模块建文件夹，遍历src下面的所有文件夹，将里面的xxx-controller添加到express路由中
const baseDir = "./";

// 遍历当前文件夹
const dirs = fs.readdirSync(baseDir);
dirs.forEach(v => {
    fs.stat(baseDir + v,(err,stats) => {
        // 出错返回
        if (err) {
            console.log(err);
            return;
        }
        // 如果是文件夹，继续获取所有文件
        if (stats.isDirectory()) {
            const dirs2 = fs.readdirSync(baseDir + v);
            // 如果后缀名是-controller.js，那么加入到路由中
            dirs2.forEach(v2 => {
                if (v2.endsWith("-controller.js")) {
                    // v.split("-")[0]，把content-controller.js中的content截取出来
                    app.use("/" + v2.split("-")[0], require(baseDir + v + "/" + v2));
                }
            })
        }
    })
});
